home *** CD-ROM | disk | FTP | other *** search
Modula Implementation | 1995-03-19 | 1.2 KB | 67 lines |
- IMPLEMENTATION MODULE Path;
-
- FROM AmigaDOS IMPORT ParentDir, FileLock, Lock, UnLock, AccessRead,
- IoErr, Examine, FileInfoBlockPtr;
- FROM Memory IMPORT AllocMem, FreeMem, MemReqSet, MemPublic, MemClear;
- FROM Strings IMPORT ConcatString;
-
-
- PROCEDURE PathName(lock : FileLock; VAR dest : ARRAY OF CHAR): BOOLEAN;
- VAR
- fib : FileInfoBlockPtr;
- status : BOOLEAN;
-
- PROCEDURE path(lock : FileLock; printslash : BOOLEAN);
- VAR
- newlock : FileLock;
- error : LONGINT;
- BEGIN
- IF lock = 0D THEN
- RETURN;
- END;
-
- newlock := ParentDir(lock);
- error := IoErr();
-
- IF (newlock = 0D) AND (error <> 0D) THEN
- UnLock(newlock);
- RETURN;
- END;
-
- path(newlock,TRUE);
-
- IF Examine(lock,fib^) THEN
- ConcatString(dest, fib^.fibFileName);
- IF newlock = 0D THEN
- ConcatString(dest,':');
- ELSIF printslash THEN
- ConcatString(dest,'/');
- END;
- ELSE
- UnLock(newlock);
- status := FALSE;
- RETURN;
- END;
-
- UnLock(newlock);
- END path;
-
- BEGIN
- status := TRUE;
-
- fib := AllocMem(SIZE(fib^),MemReqSet{MemPublic,MemClear});
- IF fib = NIL THEN
- RETURN(FALSE);
- END;
-
- path(lock,FALSE);
-
- IF fib <> NIL THEN
- FreeMem(fib,SIZE(fib^));
- END;
-
- RETURN(status);
- END PathName;
-
- END Path.
-